package com.atguigu.jxc.service;

import com.atguigu.jxc.domain.ServiceVO;
import com.atguigu.jxc.entity.SaleList;

import java.util.Map;

/**
 * @description
 */
public interface SaleListGoodsService {

    /**
     * 保存销售单信息
     * @param saleList 销售单信息实体
     * @param saleListGoodsStr 销售商品信息JSON字符串
     * @return
     */
    void save(SaleList saleList, String saleListGoodsStr);

    /**
     * 查询销售单
     * @param saleNumber 单号
     * @param customerId 客户ID
     * @param state 付款状态
     * @param sTime 开始时间
     * @param eTime 结束时间
     * @return
     */
    Map<String, Object> list(String saleNumber, Integer customerId, Integer state, String sTime, String eTime);

    /**
     * 查询销售单商品信息
     * @param saleListId 销售单ID
     * @return
     */
    Map<String, Object> goodsList(Integer saleListId);

    /**
     * 删除销售单及商品信息
     * @param saleListId 销售单ID
     * @return
     */
    void delete(Integer saleListId);

    /**
     * 修改销售单付款状态
     * @param saleListId 销售单ID
     * @return
     */
    void updateState(Integer saleListId);

    /**
     * 销售商品统计
     * @param sTime 开始时间
     * @param eTime 结束时间
     * @param goodsTypeId 商品类别ID
     * @param codeOrName 编号或商品名称
     * @return
     */
    String count(String sTime, String eTime, Integer goodsTypeId, String codeOrName);

    /**
     * 按日统计销售情况
     * @param sTime 开始时间
     * @param eTime 结束时间
     * @return
     */
    String getSaleDataByDay(String sTime, String eTime);

    /**
     * 按月统计销售情况
     * @param sTime 开始时间
     * @param eTime 结束时间
     * @return
     */
    String getSaleDataByMonth(String sTime, String eTime);
}
